// MsgData.java

// YApi QuickType插件生成，具体参考文档:https://plugins.jetbrains.com/plugin/18847-yapi-quicktype/documentation

package com.zbkj.service.sfexpress.order;

import com.zbkj.service.sfexpress.MsgData;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;

@Data
public class CreateOrderMsgData implements MsgData {
    @ApiModelProperty(value = "响应报文的语言， 缺省值为zh-CN，目前支持以下值zh-CN 表示中文简体， zh-TW或zh-HK或 zh-MO表示中文繁体， en表示英文", required = true)
    private String language;

    @ApiModelProperty(value = "客户订单号，重复使用订单号时返回第一次下单成功时的运单信息", required = true)
    private String orderId;

    @ApiModelProperty(value = "顺丰运单号", required = false)
    private List<?> waybillNoInfoList;

    @ApiModelProperty(value = "报关信息", required = false)
    private CustomsInfo customsInfo;

    @ApiModelProperty(value = "托寄物信息", required = true)
    private List<CargoDetail> cargoDetails;

    @ApiModelProperty("拖寄物类型描述,如： 文件，电子产品，衣服等")
    private String cargoDesc;

    @ApiModelProperty("扩展属性")
    private List<ExtraInfoList> extraInfoList;

    @ApiModelProperty("增值服务信息")
    private List<ServiceList> serviceList;

    @ApiModelProperty(value = "收寄双方信息", required = true)
    private List<ContactInfo> contactInfoList;

    @ApiModelProperty("顺丰月结卡号 月结支付时传值，现结不需传值；沙箱联调可使用测试月结卡号7551234567（非正式，无须绑定，仅支持联调使用）")
    private String monthlyCard;

    @ApiModelProperty("付款方式，支持以下值： 1:寄方付 2:收方付 3:第三方付")
    private Integer payMethod;

    /**
     * @link <a href="https://open.sf-express.com/developSupport/734349?activeIndex=324604" />
     */
    @ApiModelProperty("快件产品类别,支持附录 《快件产品类别表》 的产品编码值，仅可使用与顺丰销售约定的快件产品")
    private Integer expressTypeId;

    @ApiModelProperty("包裹数，一个包裹对应一个运单号；若包裹数大于1，则返回一个母运单号和N-1个子运单号")
    private Integer parcelQty;

    @ApiModelProperty("客户订单货物总长，单位厘米， 精确到小数点后3位， 包含子母件")
    private Integer totalLength;

    @ApiModelProperty("客户订单货物总宽，单位厘米， 精确到小数点后3位， 包含子母件")
    private Integer totalWidth;

    @ApiModelProperty("客户订单货物总高，单位厘米， 精确到小数点后3位， 包含子母件")
    private Integer totalHeight;

    @ApiModelProperty("订单货物总体积，单位立方厘米, 精确到小数点后3位，会用于计抛 (是否计抛具体商务沟通中 双方约定)")
    private Integer totalVolume;

    @ApiModelProperty("订单货物总重量（郑州空港海关必填）， 若为子母件必填， 单位千克， 精确到小数点后3位，如果提供此值， 必须>0 (子母件需>6)")
    private Double totalWeight;

    @ApiModelProperty("商品总净重")
    private String totalNetWeight;

    @ApiModelProperty("要求上门取件开始时间， 格式： YYYY-MM-DD HH24:MM:SS， 示例： 2012-7-30 09:30:00 （预约单传预约截止时间，不赋值默认按当前时间下发，1小时内取件）")
    private LocalDateTime sendStartTm;

    @ApiModelProperty("是否通过手持终端 通知顺丰收派 员上门收件，支持以下值： 1：要求 0：不要求")
    private Integer isDocall;

    @ApiModelProperty("是否返回签回单 （签单返还）的运单号， 支持以下值： 1：要求 0：不要求")
    private Integer isSignBack;

    @ApiModelProperty("")
    private Integer volume;

    @ApiModelProperty("客户参考编码：如客户原始订单号")
    private String custReferenceNo;

    @ApiModelProperty("温度范围类型，当 express_type为12 医药温控件 时必填，支持以下值： 1:冷藏 3：冷冻")
    private Integer temperatureRange;

    @ApiModelProperty("订单平台类型 （对于平台类客户， 如果需要在订单中 区分订单来源， 则可使用此字段） 天猫:tmall， 拼多多：pinduoduo， 京东 : jd 等平台类型编码")
    private String orderSource;

    @ApiModelProperty("备注")
    private String remark;

    @ApiModelProperty("快件自取，支持以下值： 1：客户同意快件自取 0：客户不同意快件自取")
    private Integer isOneselfPickup;

    @ApiModelProperty("筛单特殊字段用来人工筛单")
    private String filterField;

    @ApiModelProperty("是否返回用来退货业务的 二维码URL， 支持以下值： 1：返回二维码 0：不返回二维码")
    private Integer isReturnQRCode;

    @ApiModelProperty("当EXPRESS_TYPE=235 2：极效前置单（当日达） 5：极效前置小时达 当EXPRESS_TYPE=265 4：预售电标")
    private String specialDeliveryTypeCode;

    @ApiModelProperty("特殊派件具体表述 证件类型: 证件后8位如： 1:09296231（1 表示身份证， 暂不支持其他证件）")
    private String specialDeliveryValue;

    @ApiModelProperty("商户支付订单号")
    private String merchantPayOrderNo;

    @ApiModelProperty("是否返回签回单路由标签： 默认0， 1：返回路由标签， 0：不返回")
    private Integer isReturnSignBackRoute;

    @ApiModelProperty(value = "是否返回路由标签： 默认1， 1：返回路由标签， 0：不返回；除部分特殊用户外，其余用户都默认返回", required = true)
    private Integer isReturnRoutelabel;

    @ApiModelProperty("是否使用国家统一面单号 1：是， 0：否（默认）")
    private Integer isUnifiedWaybillNo;

    @ApiModelProperty("签单返还范本地址")
    private String podModelAddress;

    @ApiModelProperty("头程运单号（郑州空港海关必填）")
    private String inProcessWaybillNo;

    @ApiModelProperty("是否需求分配运单号1：分配 0：不分配（若带单号下单，请传值0）")
    private Integer isGenWaybillNo;
}